package demo;

import java.util.*;
public class Calendar {
    public static void main(String[] args) {
        System.out
                .println("*********************欢迎使用万年历***************************");
        Scanner input = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = input.nextInt();
        System.out.println("请输入月份:");
        int month = input.nextInt();
        int tian = 31;
        int days = 0;// 1900.1.1作为起点
        int i;// 自1900年起的所有年份
        // 能被4整除和不能被100整除，或者能被400整除的年份为闰年
        for (i = 1900; i < year; i++) {
            if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
                days = days + 366;
            } else {
                days = days + 365; //days累加1900年到2014的天数
            }
        }
        int day = 0;// 天数变量
        // 计算输入月份与1月1日之间的天数
        for (int a = 1; a <= month; a++) {
            switch (a) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    tian = 31;
                    if(a < month) {
                        day = day + tian;  //day累加从2015的1月到10月的天数
                    }
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    tian = 30;
                    if(a < month) {
                        day = day + tian;
                    }
                    break;
                case 2:
                    // 平年与闰年的2月份天数分别是28天和29天
                    if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
                        tian = 29;
                        if(a < month) {
                            day = day + tian;
                        }
                    } else {
                        tian = 28;
                        if(a < month) {
                            day = day + tian;
                        }
                    }
                    break;
            }
        }
        days = days + day;// 总天数
        // 判断输入年月的第一天是星期几(已知1900年1月1日星期一)
        int firstDayofMonth = 0;
        firstDayofMonth = 1 + days % 7;
        if (firstDayofMonth % 7 == 0) {
            firstDayofMonth = 0;// 星期天
        }
        System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
        for (int n = 0; n < firstDayofMonth; n++) { //打印空格
            System.out.print("\t");
        }
        // 打印天数
        for (int v = 1; v <= tian; v++) {
            System.out.print(v + "\t");// 空格+日期=7则换行
            if ((firstDayofMonth + v) % 7 == 0) {
                System.out.println();
            }
        }
    }
}